#!/usr/bin/env python
#coding=utf-8 
# 全局解释器 虽然python解释器中可以运行多个线程，但在任意时刻，只有一个线程在解释器中运行

# thread 当主线程退出时，其他线程没有被清理 
# threading 当重要线程都退出时候，进程才会退出 
# 使用 锁 
import thread
from time import sleep, ctime
loops = [4,2]
def loop(nloop, nsec, lock):
	print 'start loop', nloop, 'at: ', ctime() 
	sleep(nsec)
	print 'loop', nloop, 'done at:', ctime()
	lock.release()



def main():
	print 'starting at:', ctime()
	locks = []
	nloops = range(len(loops))

	for i in nloops:
		lock = thread.allocate_lock()
		lock.acquire()
		locks.append(lock)

	for i in nloops:
		thread.start_new_thread(loop,(i, loops[i], locks[i]))
	for i in nloops:
		while locks[i].locked():pass

	print 'all DONE at: ',ctime()

if __name__=='__main__':
	main()